Flow control systems are used in communication networks to prevent packet loss due to lack of buffer resources at the receiving end of a transmission. In multiple virtual circuit architectures such as Asynchronous Transfer Mode (ATM), existing flow control systems require a fixed amount of buffering per virtual circuit. The total amount of buffering required to support flow control systems for multiple virtual circuit architectures therefore increases with the number of virtual circuits allowed per node.
In known virtual circuit based networks, flow control is applied on each link for every virtual circuit, independent of all other virtual circuits. A window based flow control scheme is used, in which a cell is a fixed size message of a given length, and the window size equals a maximum number of cells r that can be transmitted during the round trip propagation delay between the transmitting node and the destination node.
In such known virtual circuit based networks, if v is the maximum number of virtual circuits allowed per destination node, then the total buffer requirement is rv receive buffers per destination node, where each receive buffer is sufficient in size to store one cell. As the distance between the transmitting node and the destination node increases, the total buffer requirement per destination node increases similarly. For this reason, where very long maximum distance links are permitted, buffer requirements in these systems can be impractical.
For example, in a known system where the maximum number of virtual circuits allowed per destination node is 2.sup.14, having a link speed of 622 megabits per second, there is required over 1 gigabyte of receive buffer memory in a destination node across a 100 kilometer link. This amount of receive buffer memory is used to ensure there is no performance limitation due to lack of receive buffers in the destination node. In such a known system, over 10 gigabytes of receive buffer memory is required in a destination node over a 1000 kilometer link.
Further in known flow control systems, there is a general need for fair and efficient allocation of receive buffers across all active logical connections between nodes. If fair allocation is not provided, some logical connections will receive more receive buffer resources than others, and as a consequence, performance in terms of throughput will be uneven across multiple connections. This problem potentially results in unacceptable variations in response time for users of distributed applications. Moreover, where receive buffer allocation is not efficient, the overall maximum performance will not be obtained because of wasted receive buffers. For example, when a receive buffer is allocated to a connection which does not need the receive buffer, that receive buffer could more efficiently be allocated to another connection which has a pending transmission request.
As shown above, total receive buffer requirements of existing flow control systems in communications systems using virtual circuits are prohibitively costly where long distance links between nodes are allowed. It is also desirable that receive buffers be fairly and efficiently allocated across all virtual circuits within a node. For these reasons and others, there is therefore a need for a flow control system requiring fewer total receive buffers than existing systems, and which allocates receive buffers fairly and efficiently.